var cardApp = new Framework7({
    //page切换动画
    animatePages: true,
    //模板自动编译
    precompileTemplates: true,
    // enable Template7 rendering for Ajax and Dynamic pages
    template7Pages: true,
    //浏览器可以前进后退
    pushState: true,
    //使用JS滚动条（参见 iscroll),这样就不会不满屏幕就出现滚动条
    scroller:"js"
});

var $$ = Framework7.$;

var mainView = cardApp.addView('.view-main', {
  // Because we want to use dynamic navbar, we need to enable it for this view:
  dynamicNavbar: true
});

var VM_Cards = null ;

//卡券返回结果
var cardResult = null ;

//更改avalon默认双大括号的界定符，防止与 framework7 冲突
avalon.config({
    interpolate: ["{@","}"]
});

//扫码页面scanCards初始化回调初始化avalon的VM对象
cardApp.onPageInit('scanCards', function (page) {
    
    VM_Cards = avalon.define("cards", function(vm) {
        vm.cards = [];
        vm.remove = function(el){
            vm.cards.remove(el);
            storeCards();
        }
    });
    //如果本地有缓存，取出缓存的卡号进行初始化
    if(localStorage.cardsList){
        VM_Cards.cards = JSON.parse(localStorage.cardsList) ;
    }

}).trigger(); //And trigger it right away;


/********************************
 *
 *扫码处理函数
 *
 *******************************/
function scan_bar(){
    wx.scanQRCode({
        desc: 'scanQRCode desc',
        needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
        scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码，默认二者都有
        success: function (res) {
            var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
            var infs = result.split(',');
            var cardFlag = false ;

            if (infs.length > 0){
                //查找已扫卡券的列表
                for(var i=0 ; i< VM_Cards.cards.length; i++){
                    //如果新扫描的卡券已存在，标识为true
                    if(VM_Cards.cards[i].codeStandard ===infs[0]&&VM_Cards.cards[i].code === infs[1]){
                        cardFlag = true;
                    }
                }
                //如果新扫描的卡券未存在，存入VM中;同时缓存在本地
                if(!cardFlag){
                    var cardsInfo = {'codeStandard':infs[0],'code':infs[1],'showStyle':'black'};
                    VM_Cards.cards.push(cardsInfo);
                    storeCards();
                }

                //延时500毫秒，重新调用扫描功能
                setTimeout("scan_bar()" , 600 ); 
            }
        }
    });
}

/********************************
 *
 *手动添加卡券函数
 *
 *******************************/
function addInputCards(){
    var cardCode = $$("#card-code")[0].value;
    //构造输入的卡券信息，卡券编码类型为 dzx_card
    var infs = ('dzx_card,'+cardCode).split(',');
    var cardFlag = false ;
    if(cardCode){
        //查找已扫卡券的列表
        for(var i=0 ; i< VM_Cards.cards.length; i++){
            //如果新扫描的卡券已存在，标识为true
            if(VM_Cards.cards[i].codeStandard === infs[0]&&VM_Cards.cards[i].code === infs[1]){
                cardFlag = true;
            }
        }

        //如果新扫描的卡券未存在，存入VM中;同时缓存在本地
        if(!cardFlag){
            var cardsInfo = {'codeStandard':infs[0],'code':infs[1],'showStyle':'black'};
            VM_Cards.cards.push(cardsInfo);
            storeCards();
        }
        //清空input输入框
        $$("#card-code")[0].value = "";
    }
}

/********************************
 *
 *本地缓存卡券信息
 *
 *******************************/
function storeCards(){
    //JSON序列化存储在本地
    localStorage.cardsList = JSON.stringify(VM_Cards.$model.cards) ;
}

/********************************
 *
 *清空卡券列表
 *
 *******************************/
function cleanCardList(){
    VM_Cards.cards.clear();
    storeCards();
}

/********************************
 *
 *标记VM中的错误卡号
 *
 *******************************/
function tagErrorCards(){
    if( cardResult.error_cards.length > 0 ){
        var errorCards = cardResult.error_cards ;
        for(var i=0 ; i< VM_Cards.cards.length; i++){
            for(var j=0 ; j< errorCards.length; j++){
                if(VM_Cards.cards[i].code == errorCards[j]){
                    VM_Cards.cards[i].showStyle = 'red';
                }
            }
        }
        storeCards();
    }
}

wx.ready(function(){

});


$$('#scan-bar').on('click', function(e){
    scan_bar();
})

$$('#cleanAllCards').on('click', function(e){
    cleanCardList();
})

$$('#add-cards').on('click', function(e){
    addInputCards();  
})

/********************************
 *
 *卡券激活界面提交处理
 *
 *******************************/
$$('#submitToPay').on('click', function(e){
    var scanCardCodes = '';
    for(var i=0 ; i< VM_Cards.cards.length; i++){
        if(i == 0){
            scanCardCodes += VM_Cards.cards[i].code
        }else{
            scanCardCodes += ','+ VM_Cards.cards[i].code
        }
    } 
    
    if(scanCardCodes){
        cardApp.showIndicator();
        $$.ajax({
            url: '/wx/card/submitToPay',
            type: "POST",
            //contentType: "application/json",
            data: {cards:scanCardCodes},
            success: submitSuccess
        });
    }
})

/********************************
 *
 *卡券激活界面提交回调
 *
 *******************************/
var submitSuccess = function(data) {
    cardApp.hideIndicator();
    cardResult = JSON.parse(data);
    var message = cardResult.message.split("\n");
    var totalInfo = message[message.length-1];
    var cardsInfo = '';
    for(var i=0;i<message.length-1;i++){
        //由于message信息第一行本来就为回车，所以不需要继续加回车符
        if(i == 0){
            cardsInfo += message[i];
        }
        else{
            cardsInfo += message[i]+'<BR/>';
        }
    } 

    var templateContext = {
            message:cardsInfo,
            totalInfo:totalInfo,
            errorCards:cardResult.error_cards
    };
    
    // 加载支付的界面
    mainView.router.load({
        content : $$('#payTemplate').html() ,
        context : templateContext
    });
    //重新标记VM中的错误卡券号
    tagErrorCards();
};

/********************************
 *
 *余额支付处理逻辑
 *
 *******************************/
cardApp.onPageInit('payPage', function (page) {
    $$('#remainPay').on('click', function(e){
        var activeCardIds = '';
        for(var i=0 ; i< cardResult.my_active_cards.length; i++){
            if(i == cardResult.my_active_cards.length-1 ){
                activeCardIds += cardResult.my_active_cards[i].id
            }else{
                activeCardIds += cardResult.my_active_cards[i].id + ','
            }
        } 

        if(activeCardIds){
            cardApp.showPreloader('卡券激活支付中');
            $$.ajax({
                url: '/wx/card/remainPay',
                type: "POST",
                //contentType: "application/json",
                data: {activeCardIds:activeCardIds},
                success: remainPaySuccess
            });
        }
        else{
            cardApp.alert('当前无可激活的卡券！' , '提示');
        }
    })
})

/********************************
 *
 *余额支付完成回调
 *
 *******************************/
var remainPaySuccess = function(data) {
    cardApp.hidePreloader();
    remainPayResult = JSON.parse(data);
    
    var payResult = remainPayResult.result;
    //如果支付失败，提示给用户，不做任何操作
    if(payResult == 'fail'){
        cardApp.alert(remainPayResult.message , '支付失败');
    }
    //如果支付成功，清除页面缓存和VM信息，返回到扫描界面
    else{
        cardApp.alert('卡券已成功激活！' , '支付成功');
        // 清空本地浏览器缓存和VM
        cleanCardList();
        // 加载卡券扫码的界面
        mainView.router.load({
            pageName:'scanCards'
        });
    }
    
};

//// 10 微信支付接口
//document.querySelector('#btn-pay').onclick = function () {
//    // 注意：此 Demo 使用 2.7 版本支付接口实现，建议使用此接口时参考微信支付相关最新文档。
//    wx.chooseWXPay({
//      timestamp: 1414723227,
//      nonceStr: 'noncestr',
//      package: 'addition=action_id%3dgaby1234%26limit_pay%3d&bank_type=WX&body=innertest&fee_type=1&input_charset=GBK&notify_url=http%3A%2F%2F120.204.206.246%2Fcgi-bin%2Fmmsupport-bin%2Fnotifypay&out_trade_no=1414723227818375338&partner=1900000109&spbill_create_ip=127.0.0.1&total_fee=1&sign=432B647FE95C7BF73BCD177CEECBEF8D',
//      signType: 'SHA1', // 注意：新版支付接口使用 MD5 加密
//      paySign: 'bd5b1933cda6e9548862944836a9b52e8c9a2b69'
//    });
//};


wx.error(function(res){
    for (var a in res)
        alert(a + ':' + res[a]);
});

